home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993 April: Penguin on DISC / ADC Developer CD (1993-04) (''Penguin On DISC'')_iso / Dev.CD Apr 93.iso / Utilities / MPW Interfaces 7.1 Beta / PInterfaces / TextEdit.p < prev    next >
Encoding:
Text File  |  1992-08-28  |  10.0 KB  |  341 lines  |  [TEXT/MPS ]

  1.  
  2. {
  3. Created: Sunday, July 28, 1991 at 12:09 AM
  4.  TextEdit.p
  5.  Pascal Interface to the Macintosh Libraries
  6.  
  7.   Copyright Apple Computer, Inc. 1985-1991
  8.   All rights reserved
  9.  
  10. *** Warning: This is an alpha version of the Interfaces for Cube-E. 
  11. ***          Things may change.  Caveat Programmer.
  12.  
  13.  
  14. }
  15.  
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT TextEdit;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED UsingTextEdit}
  27. {$SETC UsingTextEdit := 1}
  28.  
  29. {$I+}
  30. {$SETC TextEditIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32. {$IFC UNDEFINED UsingQuickdraw}
  33. {$I $$Shell(PInterfaces)Quickdraw.p}
  34. {$ENDC}
  35. {$SETC UsingIncludes := TextEditIncludes}
  36.  
  37. CONST
  38.  
  39. { Justification styles }
  40. teJustLeft = 0;
  41. teJustCenter = 1;
  42. teJustRight = -1;
  43. teForceLeft = -2;
  44.  
  45. { new names for the Justification styles }
  46. teFlushDefault = 0;                        {flush according to the line direction }
  47. teCenter = 1;                            {center justify }
  48. teFlushRight = -1;                        {flush right for all scripts }
  49. teFlushLeft = -2;                        {flush left for all scripts }
  50.  
  51. { Set/Replace style modes }
  52. fontBit = 0;                            {set font}
  53. faceBit = 1;                            {set face}
  54. sizeBit = 2;                            {set size}
  55. clrBit = 3;                                {set color}
  56. addSizeBit = 4;                            {add size mode}
  57. toglBit = 5;                            {set faces in toggle mode}
  58.  
  59. { TESetStyle/TEContinuousStyle modes }
  60. doFont = 1;                                { set font (family) number}
  61. doFace = 2;                                {set character style}
  62. doSize = 4;                                {set type size}
  63. doColor = 8;                            {set color}
  64. doAll = 15;                                {set all attributes}
  65. addSize = 16;                            {adjust type size}
  66. doToggle = 32;                            {toggle mode for TESetStyle & TEContinuousStyle}
  67.  
  68. { offsets into TEDispatchRec }
  69. EOLHook = 0;                            {[ProcPtr] TEEOLHook}
  70. DRAWHook = 4;                            {[ProcPtr] TEWidthHook}
  71. WIDTHHook = 8;                            {[ProcPtr] TEDrawHook}
  72. HITTESTHook = 12;                        {[ProcPtr] TEHitTestHook}
  73. nWIDTHHook = 24;                        {[ProcPtr] nTEWidthHook}
  74. TextWidthHook = 28;                        {[ProcPtr] TETextWidthHook}
  75.  
  76. { selectors for TECustomHook }
  77. intEOLHook = 0;                            {TEIntHook value}
  78. intDrawHook = 1;                        {TEIntHook value}
  79. intWidthHook = 2;                        {TEIntHook value}
  80. intHitTestHook = 3;                        {TEIntHook value}
  81. intNWidthHook = 6;                        {TEIntHook value for new version of WidthHook}
  82. intTextWidthHook = 7;                    {TEIntHook value for new TextWidthHook}
  83.  
  84. { feature or bit definitions for TEFeatureFlag }
  85. teFAutoScr = 0;                            {00000001b}
  86. teFTextBuffering = 1;                    {00000010b}
  87. teFOutlineHilite = 2;                    {00000100b}
  88. teFInlineInput = 3;                        {00001000b}
  89. teFUseTextServices = 4;                    {00010000b}
  90.  
  91. { action for the new "bit (un)set" interface, TEFeatureFlag }
  92. TEBitClear = 0;
  93. TEBitSet = 1;                            {set the selector bit}
  94. TEBitTest = -1;                            {no change; just return the current setting}
  95.  
  96. {constants for identifying the routine that called FindWord }
  97. teWordSelect = 4;                        {clickExpand to select word}
  98. teWordDrag = 8;                            {clickExpand to drag new word}
  99. teFromFind = 12;                        {FindLine called it ($0C)}
  100. teFromRecal = 16;                        {RecalLines called it ($10)}
  101.  
  102. TYPE
  103. TEPtr = ^TERec;
  104. TEHandle = ^TEPtr;
  105. TERec = RECORD
  106.  destRect: Rect;
  107.  viewRect: Rect;
  108.  selRect: Rect;
  109.  lineHeight: INTEGER;
  110.  fontAscent: INTEGER;
  111.  selPoint: Point;
  112.  selStart: INTEGER;
  113.  selEnd: INTEGER;
  114.  active: INTEGER;
  115.  wordBreak: ProcPtr;
  116.  clikLoop: ProcPtr;
  117.  clickTime: LONGINT;
  118.  clickLoc: INTEGER;
  119.  caretTime: LONGINT;
  120.  caretState: INTEGER;
  121.  just: INTEGER;
  122.  teLength: INTEGER;
  123.  hText: Handle;
  124.  recalBack: INTEGER;
  125.  recalLines: INTEGER;
  126.  clikStuff: INTEGER;
  127.  crOnly: INTEGER;
  128.  txFont: INTEGER;
  129.  txFace: Style;                            {txFace is unpacked byte}
  130.  txMode: INTEGER;
  131.  txSize: INTEGER;
  132.  inPort: GrafPtr;
  133.  highHook: ProcPtr;
  134.  caretHook: ProcPtr;
  135.  nLines: INTEGER;
  136.  lineStarts: ARRAY [0..16000] OF INTEGER;
  137.  END;
  138.  
  139. CharsPtr = ^Chars;
  140. CharsHandle = ^CharsPtr;
  141.  
  142. Chars = PACKED ARRAY [0..32000] OF CHAR;
  143.  
  144. StyleRun = RECORD
  145.  startChar: INTEGER;                    {starting character position}
  146.  styleIndex: INTEGER;                    {index in style table}
  147.  END;
  148.  
  149. STElement = RECORD
  150.  stCount: INTEGER;                        {number of runs in this style}
  151.  stHeight: INTEGER;                        {line height}
  152.  stAscent: INTEGER;                        {font ascent}
  153.  stFont: INTEGER;                        {font (family) number}
  154.  stFace: Style;                            {character Style}
  155.  stSize: INTEGER;                        {size in points}
  156.  stColor: RGBColor;                        {absolute (RGB) color}
  157.  END;
  158.  
  159. STPtr = ^TEStyleTable;
  160. STHandle = ^STPtr;
  161.  
  162. TEStyleTable = ARRAY [0..1776] OF STElement;
  163.  
  164. LHElement = RECORD
  165.  lhHeight: INTEGER;                        {maximum height in line}
  166.  lhAscent: INTEGER;                        {maximum ascent in line}
  167.  END;
  168.  
  169. LHPtr = ^LHTable;
  170. LHHandle = ^LHPtr;
  171.  
  172. LHTable = ARRAY [0..8000] OF LHElement;
  173.  
  174. ScrpSTElement = RECORD
  175.  scrpStartChar: LONGINT;                {starting character position}
  176.  scrpHeight: INTEGER;                    {starting character position}
  177.  scrpAscent: INTEGER;
  178.  scrpFont: INTEGER;
  179.  scrpFace: Style;                        {unpacked byte}
  180.  scrpSize: INTEGER;
  181.  scrpColor: RGBColor;
  182.  END;
  183.  
  184. ScrpSTTable = ARRAY[0..1600] OF ScrpSTElement;
  185.  
  186. StScrpPtr = ^StScrpRec;
  187. StScrpHandle = ^StScrpPtr;
  188. StScrpRec = RECORD
  189.  scrpNStyles: INTEGER;                    {number of styles in scrap}
  190.  scrpStyleTab: ScrpSTTable;                {table of styles for scrap}
  191.  END;
  192.  
  193. NullStPtr = ^NullStRec;
  194. NullStHandle = ^NullStPtr;
  195. NullStRec = RECORD
  196.  teReserved: LONGINT;                    {reserved for future expansion}
  197.  nullScrap: StScrpHandle;                {handle to scrap style table}
  198.  END;
  199.  
  200. TEStylePtr = ^TEStyleRec;
  201. TEStyleHandle = ^TEStylePtr;
  202. TEStyleRec = RECORD
  203.  nRuns: INTEGER;                        {number of style runs}
  204.  nStyles: INTEGER;                        {size of style table}
  205.  styleTab: STHandle;                    {handle to style table}
  206.  lhTab: LHHandle;                        {handle to line-height table}
  207.  teRefCon: LONGINT;                        {reserved for application use}
  208.  nullStyle: NullStHandle;                {Handle to style set at null selection}
  209.  runs: ARRAY [0..8000] OF StyleRun;        {ARRAY [0..8000] OF StyleRun}
  210.  END;
  211.  
  212. TextStylePtr = ^TextStyle;
  213. TextStyleHandle = ^TextStylePtr;
  214. TextStyle = RECORD
  215.  tsFont: INTEGER;                        {font (family) number}
  216.  tsFace: Style;                            {character Style}
  217.  tsSize: INTEGER;                        {size in point}
  218.  tsColor: RGBColor;                        {absolute (RGB) color}
  219.  END;
  220.  
  221.  
  222. TEIntHook = INTEGER;
  223.  
  224. PROCEDURE TEInit;
  225.  INLINE $A9CC;
  226. FUNCTION TENew(destRect: Rect;viewRect: Rect): TEHandle;
  227.  INLINE $A9D2;
  228. PROCEDURE TEDispose(hTE: TEHandle);
  229.  INLINE $A9CD;
  230. PROCEDURE TESetText(text: Ptr;length: LONGINT;hTE: TEHandle);
  231.  INLINE $A9CF;
  232. FUNCTION TEGetText(hTE: TEHandle): CharsHandle;
  233.  INLINE $A9CB;
  234. PROCEDURE TEIdle(hTE: TEHandle);
  235.  INLINE $A9DA;
  236. PROCEDURE TESetSelect(selStart: LONGINT;selEnd: LONGINT;hTE: TEHandle);
  237.  INLINE $A9D1;
  238. PROCEDURE TEActivate(hTE: TEHandle);
  239.  INLINE $A9D8;
  240. PROCEDURE TEDeactivate(hTE: TEHandle);
  241.  INLINE $A9D9;
  242. PROCEDURE TEKey(key: CHAR;hTE: TEHandle);
  243.  INLINE $A9DC;
  244. PROCEDURE TECut(hTE: TEHandle);
  245.  INLINE $A9D6;
  246. PROCEDURE TECopy(hTE: TEHandle);
  247.  INLINE $A9D5;
  248. PROCEDURE TEPaste(hTE: TEHandle);
  249.  INLINE $A9DB;
  250. PROCEDURE TEDelete(hTE: TEHandle);
  251.  INLINE $A9D7;
  252. PROCEDURE TEInsert(text: Ptr;length: LONGINT;hTE: TEHandle);
  253.  INLINE $A9DE;
  254. PROCEDURE TESetJust(just: INTEGER;hTE: TEHandle);
  255.  INLINE $A9DF;
  256. PROCEDURE TEUpdate(rUpdate: Rect;hTE: TEHandle);
  257.  INLINE $A9D3;
  258. PROCEDURE TextBox(text: Ptr;length: LONGINT;box: Rect;just: INTEGER);
  259.  INLINE $A9CE;
  260. PROCEDURE TEScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  261.  INLINE $A9DD;
  262. PROCEDURE TESelView(hTE: TEHandle);
  263.  INLINE $A811;
  264. PROCEDURE TEPinScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  265.  INLINE $A812;
  266. PROCEDURE TEAutoView(fAuto: BOOLEAN;hTE: TEHandle);
  267.  INLINE $A813;
  268. FUNCTION TEScrapHandle: Handle;
  269.  INLINE $2EB8,$0AB4;
  270. PROCEDURE TECalText(hTE: TEHandle);
  271.  INLINE $A9D0;
  272. FUNCTION TEGetOffset(pt: Point;hTE: TEHandle): INTEGER;
  273.  INLINE $A83C;
  274. FUNCTION TEGetPoint(offset: INTEGER;hTE: TEHandle): Point;
  275.  INLINE $3F3C,$0008,$A83D;
  276. PROCEDURE TEClick(pt: Point;fExtend: BOOLEAN;h: TEHandle);
  277.  INLINE $A9D4;
  278. FUNCTION TEStylNew(destRect: Rect;viewRect: Rect): TEHandle;
  279.  INLINE $A83E;
  280. FUNCTION TEStyleNew(destRect: Rect;viewRect: Rect): TEHandle;
  281.  INLINE $A83E;
  282. PROCEDURE SetStylHandle(theHandle: TEStyleHandle;hTE: TEHandle);
  283.  INLINE $3F3C,$0005,$A83D;
  284. PROCEDURE SetStyleHandle(theHandle: TEStyleHandle;hTE: TEHandle);
  285.  INLINE $3F3C,$0005,$A83D;
  286. FUNCTION GetStylHandle(hTE: TEHandle): TEStyleHandle;
  287.  INLINE $3F3C,$0004,$A83D;
  288. FUNCTION GetStyleHandle(hTE: TEHandle): TEStyleHandle;
  289.  INLINE $3F3C,$0004,$A83D;
  290. PROCEDURE TEGetStyle(offset: INTEGER;VAR theStyle: TextStyle;VAR lineHeight: INTEGER;
  291.  VAR fontAscent: INTEGER;hTE: TEHandle);
  292.  INLINE $3F3C,$0003,$A83D;
  293. PROCEDURE TEStylPaste(hTE: TEHandle);
  294.  INLINE $3F3C,$0000,$A83D;
  295. PROCEDURE TEStylePaste(hTE: TEHandle);
  296.  INLINE $3F3C,$0000,$A83D;
  297. PROCEDURE TESetStyle(mode: INTEGER;newStyle: TextStyle;redraw: BOOLEAN;
  298.  hTE: TEHandle);
  299.  INLINE $3F3C,$0001,$A83D;
  300. PROCEDURE TEReplaceStyle(mode: INTEGER;oldStyle: TextStyle;newStyle: TextStyle;
  301.  redraw: BOOLEAN;hTE: TEHandle);
  302.  INLINE $3F3C,$0002,$A83D;
  303. FUNCTION GetStylScrap(hTE: TEHandle): StScrpHandle;
  304.  INLINE $3F3C,$0006,$A83D;
  305. FUNCTION GetStyleScrap(hTE: TEHandle): StScrpHandle;
  306.  INLINE $3F3C,$0006,$A83D;
  307. PROCEDURE TEStylInsert(text: Ptr;length: LONGINT;hST: StScrpHandle;hTE: TEHandle);
  308.  INLINE $3F3C,$0007,$A83D;
  309. PROCEDURE TEStyleInsert(text: Ptr;length: LONGINT;hST: StScrpHandle;hTE: TEHandle);
  310.  INLINE $3F3C,$0007,$A83D;
  311. FUNCTION TEGetHeight(endLine: LONGINT;startLine: LONGINT;hTE: TEHandle): LONGINT;
  312.  INLINE $3F3C,$0009,$A83D;
  313. FUNCTION TEContinuousStyle(VAR mode: INTEGER;VAR aStyle: TextStyle;hTE: TEHandle): BOOLEAN;
  314.  INLINE $3F3C,$000A,$A83D;
  315. PROCEDURE SetStylScrap(rangeStart: LONGINT;rangeEnd: LONGINT;newStyles: StScrpHandle;
  316.  redraw: BOOLEAN;hTE: TEHandle);
  317.  INLINE $3F3C,$000B,$A83D;
  318. PROCEDURE SetStyleScrap(rangeStart: LONGINT;rangeEnd: LONGINT;newStyles: StScrpHandle;
  319.  redraw: BOOLEAN;hTE: TEHandle);
  320.  INLINE $3F3C,$000B,$A83D;
  321. PROCEDURE TECustomHook(which: TEIntHook;VAR addr: ProcPtr;hTE: TEHandle);
  322.  INLINE $3F3C,$000C,$A83D;
  323. FUNCTION TENumStyles(rangeStart: LONGINT;rangeEnd: LONGINT;hTE: TEHandle): LONGINT;
  324.  INLINE $3F3C,$000D,$A83D;
  325. FUNCTION TEFeatureFlag(feature: INTEGER;action: INTEGER;hTE: TEHandle): INTEGER;
  326.  INLINE $3F3C,$000E,$A83D;
  327. FUNCTION TEGetScrapLen: LONGINT;
  328. PROCEDURE TESetScrapLen(length: LONGINT);
  329. FUNCTION TEFromScrap: OSErr;
  330. FUNCTION TEToScrap: OSErr;
  331. PROCEDURE SetClikLoop(clikProc: ProcPtr;hTE: TEHandle);
  332. PROCEDURE SetWordBreak(wBrkProc: ProcPtr;hTE: TEHandle);
  333.  
  334.  
  335. {$ENDC} { UsingTextEdit }
  336.  
  337. {$IFC NOT UsingIncludes}
  338.  END.
  339. {$ENDC}
  340.  
  341.